#version 330 core
out vec4 FragColor;

uniform vec3 objectColor;
uniform vec3 lightColor;
uniform vec3 lightPos;

in vec3 Normal;
in vec3 FragPos;

void main()
{
  //ambient
  float ambient = 0.1f;

  //diffuse
  vec3 norm = normalize(Normal);
  vec3 lightDir = normalize(lightPos - FragPos); // 正对着光源的点会亮一些。 光的方向向量是光源位置向量与片段位置向量之间的向量差
  float diffuse = max(dot(norm, lightDir), 0.0f); // 如果两个向量之间的角度大于90度，点乘的结果就会变成负数，这样会导致漫反射分量变为负数。为此，我们使用max函数返回两个参数之间较大的参数，从而保证漫反射分量不会变成负数。

  //all
  vec3 result =  (ambient + diffuse) * lightColor * objectColor;
  FragColor = vec4(result, 1.0f);
}
